Analisis ini bertujuan untuk membuat visualisasi data berdasarkan dataset UAS yang diberikan, termasuk grafik univariat, bivariat, multivariat, dan interaktif. Dataset ini mencakup informasi tentang harapan hidup, pendapatan per kapita, populasi, dan rata-rata jumlah anak dari berbagai negara dan benua selama beberapa tahun.
# Memuat dataset
library(readxl)
file_path <- "Data UAS.xlsx"
df <- read_excel(file_path, sheet = "Data") %>%
mutate(
Benua = factor(Benua),
Tahun = as.integer(Tahun)
)
# Menampilkan beberapa baris pertama
head(df)## # A tibble: 6 × 8
## geo Negara Benua Tahun Angka_Harapan_Hidup Pendapatan_per_kapita Populasi
## <chr> <chr> <fct> <int> <dbl> <dbl> <dbl>
## 1 afg Afghanis… asia 1800 28.2 481. 3280000
## 2 afg Afghanis… asia 1801 28.2 481. 3280000
## 3 afg Afghanis… asia 1802 28.2 481. 3280000
## 4 afg Afghanis… asia 1803 28.2 481. 3280000
## 5 afg Afghanis… asia 1804 28.2 481. 3280000
## 6 afg Afghanis… asia 1805 28.2 481. 3280000
## # ℹ 1 more variable: Jumlah_anak <dbl>
## geo Negara Benua Tahun
## Length:44325 Length:44325 africa :12150 Min. :1800
## Class :character Class :character americas: 7875 1st Qu.:1856
## Mode :character Mode :character asia :13275 Median :1912
## europe :11025 Mean :1912
## 3rd Qu.:1968
## Max. :2024
## Angka_Harapan_Hidup Pendapatan_per_kapita Populasi Jumlah_anak
## Min. : 0.00 Min. : 163.0 Min. :6.510e+02 Min. :0.710
## 1st Qu.:31.16 1st Qu.: 974.1 1st Qu.:2.972e+05 1st Qu.:4.210
## Median :36.13 Median : 1714.7 Median :1.811e+06 Median :5.830
## Mean :42.99 Mean : 5932.4 Mean :1.380e+07 Mean :5.235
## 3rd Qu.:58.43 3rd Qu.: 4512.2 3rd Qu.:6.370e+06 3rd Qu.:6.570
## Max. :85.50 Max. :221544.1 Max. :1.451e+09 Max. :8.860
ggplot(df, aes(x = Angka_Harapan_Hidup)) +
geom_histogram(
bins = 30,
fill = "#69b3a2",
color = "white",
alpha = 0.9
) +
theme_minimal() +
labs(
title = "Distribusi Angka Harapan Hidup",
x = "Angka Harapan Hidup",
y = "Frekuensi"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text = element_text(size = 10)
)p_scatter <- ggplot(df, aes(
x = Pendapatan_per_kapita,
y = Angka_Harapan_Hidup,
size = Populasi,
color = Benua,
text = paste(
"Negara:", Negara,
"<br>Populasi:", scales::comma(Populasi),
"<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
"<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
)
)) +
geom_point(alpha = 0.8) +
scale_x_log10(labels = scales::comma) +
theme_minimal() +
labs(
title = "Pendapatan per Kapita vs Angka Harapan Hidup",
x = "Pendapatan per Kapita (Log Skala)",
y = "Angka Harapan Hidup",
color = "Benua",
size = "Populasi"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
legend.position = "bottom"
)
# Menggunakan plotly untuk interaktivitas
plotly::ggplotly(p_scatter, tooltip = "text")##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
heatmap_data <- df %>%
group_by(Benua, Tahun) %>%
summarize(Rata_Jumlah_Anak = mean(Jumlah_anak, na.rm = TRUE))## `summarise()` has grouped output by 'Benua'. You can override using the
## `.groups` argument.
p_heatmap <- ggplot(heatmap_data, aes(x = Tahun, y = Benua, fill = Rata_Jumlah_Anak)) +
geom_tile(color = "white") +
scale_fill_gradientn(colors = brewer.pal(9, "YlOrRd"), na.value = "grey") +
theme_minimal() +
labs(
title = "Rata-rata Jumlah Anak Berdasarkan Benua dan Tahun",
x = "Tahun",
y = "Benua",
fill = "Rata-rata\nJumlah Anak"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text.x = element_text(angle = 45, hjust = 1)
)
# Interaktif
plotly::ggplotly(p_heatmap)p_bubble <- plot_ly(
data = df,
x = ~Pendapatan_per_kapita,
y = ~Angka_Harapan_Hidup,
size = ~Populasi,
color = ~Benua,
text = ~paste(
"Negara:", Negara,
"<br>Populasi:", scales::comma(Populasi),
"<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
"<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
),
type = "scatter",
mode = "markers",
marker = list(sizemode = "diameter", opacity = 0.7)
) %>%
layout(
title = "Bubble Plot: Pendapatan vs Harapan Hidup",
xaxis = list(title = "Pendapatan per Kapita (Log Skala)", type = "log"),
yaxis = list(title = "Angka Harapan Hidup"),
legend = list(title = list(text = "Benua"))
)
p_bubble